package cn.itcast.myapplication.activity;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProvider;

import android.os.Bundle;

import cn.itcast.myapplication.R;
import cn.itcast.myapplication.databinding.ActivityViewModelRestoreBinding;
import cn.itcast.myapplication.viewemodel.MyViewModel;

public class ViewModelRestore extends AppCompatActivity {

    ActivityViewModelRestoreBinding binding;

    MyViewModel myViewModel;

    public final static String KEY_NUMBER="my_numbers";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         //在Activity被创建的时候可以在这里使用数据
         //setContentView(R.layout.activity_view_model_restore);

        binding= DataBindingUtil.setContentView(this,R.layout.activity_view_model_restore);

        myViewModel=new ViewModelProvider(this).get(MyViewModel.class);

//        //如果时第一次加载Activity 那么这里面的savedInstanceState是空的，如果不加判断直接就来呼叫里取回他里面的内容那么程序会崩溃掉
//        if (savedInstanceState!=null){
//
//            myViewModel.getNumbers().setValue(savedInstanceState.getInt(KEY_NUMBER));//通过Key来取回整数，将他设置在numbers的变量中
//
//        }

        //设置数据
        binding.setData(myViewModel);

        //设置生命周期所有者
        binding.setLifecycleOwner(this);


    }


//    /**
//     *
//     * 这种方法比较的旧的方式 用了Activity里面的一个工具（ViewModel有自带有一个属性）
//    *
//    * */
//
//    //在Activity调用onSaveInstanceState 可以通过Bundle这个对象来存放我们想要存放保持的一些界面数据
//    @Override
//    public void onSaveInstanceState(@NonNull Bundle outState, @NonNull PersistableBundle outPersistentState) {
//        super.onSaveInstanceState(outState, outPersistentState);
//        outState.putInt(KEY_NUMBER,myViewModel.getNumbers().getValue());
//
//    }

}
